package br.com.cefetrn.apoena.view.action;

import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import br.com.cefetrn.apoena.dominio.entity.Fotos;
import br.com.cefetrn.apoena.dominio.entity.Noticia;
import br.com.cefetrn.apoena.dominio.entity.NoticiaFotos;
import br.com.cefetrn.apoena.dominio.home.Home4Fotos;
import br.com.cefetrn.apoena.dominio.home.Home4Noticia;
import br.com.cefetrn.apoena.dominio.home.Home4NoticiaFotos;
import br.com.cefetrn.apoena.util.Arquivo;

public class Action4Noticias extends AxActionAPOENA {

	private static final Log LOG = LogFactory.getLog(Action4Noticias.class);
	private Noticia noticia = new Noticia();
	private Fotos foto = new Fotos();
	private NoticiaFotos notfoto = new NoticiaFotos();
	private Home4Noticia noticiaHome = new Home4Noticia();
	private Home4Fotos fotosHome = new Home4Fotos();
	private Home4NoticiaFotos notfotoHome = new Home4NoticiaFotos();
	private File arquivo = new File("");
	private List<Noticia> noticias = new ArrayList<Noticia>();
	private String publicacao = "";
	private SimpleDateFormat sdt = new SimpleDateFormat("dd/MM/yyyy");
	
	private String arquivoContentType = "";
	private String arquivoFileName= "";
	
	//Busca
	private int codNoticiaBuscada = new Integer(0);
	private String DETALHAR = "DETALHAR";
	
	public String getArquivoFileName() {
		return arquivoFileName;
	}

	public void setArquivoFileName(String arquivoFileName) {
		this.arquivoFileName = arquivoFileName;
	}

	public String getArquivoContentType() {
		return arquivoContentType;
	}

	public void setArquivoContentType(String arquivoContentType) {
		this.arquivoContentType = arquivoContentType;
	}

	@Override
	public void prepare() throws Exception {
		// TODO Auto-generated method stub
		LOG.info("prepare()");
		noticiaHome.setSession(getSession());
		
		noticias = noticiaHome.findAll();
	}

	@Override
	protected String go() {
		// TODO Auto-generated method stub
		if (CADASTRO.equalsIgnoreCase(tipo))
			cadastrar();
		if (REMOCAO.equalsIgnoreCase(tipo))
			deletar();
		if (EDICAO.equalsIgnoreCase(tipo))
			editar();
		
		if (EDICAO.equalsIgnoreCase(tipo)) {
			editar();
		}
		if (BUSCA.equalsIgnoreCase(tipo)){
				buscar();
			
		}

		return result;
	}

	private Noticia buscar() {
		if (botao.equalsIgnoreCase("buscar")){
			if (codNoticiaBuscada != 0){ 
				noticia = noticiaHome.findById(codNoticiaBuscada);
				//arquivo = noticia.getNoticiaFotoses();
				tipo = DETALHAR;
			}
			//System.out.println(evento.getPessoa().getNome());
		}
		
		return noticia;
		
	}

	private void editar() {
		
		if (botao.equalsIgnoreCase("editar")){
			if (codNoticiaBuscada != 0 ){ 
				Noticia n = noticiaHome.findById(codNoticiaBuscada);
				try {
					n.setPublicacao(sdt.parse(publicacao));
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				noticia = noticiaHome.findById(codNoticiaBuscada);
				noticiaHome.attachDirty(noticia);
			}
			
			
		}
		
		noticia = noticiaHome.findById(codNoticiaBuscada);
		publicacao = sdt.format(noticia.getPublicacao());
	}

	private void deletar() {
		// TODO Auto-generated method stub
		noticiaHome.setSession(getSession());
		noticiaHome.delete(noticia);

	}

	private void cadastrar() {
		// TODO Auto-generated method stub
		if (botao.equalsIgnoreCase("enviar")) {
			
			try {
				noticia.setPublicacao(sdt.parse(publicacao));
				System.out.println("AAAAAAAARRRRRRRRQUUUUUUUUUUUIVVVVVVVVVVVVVVVOOOOOOOOOOOO");
				System.out.println("AAAAAAAARRRRRRRRQUUUUUUUUUUUIVVVVVVVVVVVVVVVOOOOOOOOOOOO");
				System.out.println("AAAAAAAARRRRRRRRQUUUUUUUUUUUIVVVVVVVVVVVVVVVOOOOOOOOOOOO");
				System.out.println("AAAAAAAARRRRRRRRQUUUUUUUUUUUIVVVVVVVVVVVVVVVOOOOOOOOOOOO");
				System.out.println(arquivo);
				foto.setFoto(Arquivo.getBytesFromFile(arquivo));
			
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("ö erro esta aqui");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("nao anexou!");
			}
			noticiaHome.setSession(getSession());
			noticiaHome.persist(noticia);
			foto.setDescricao("caralhudo");
			fotosHome.setSession(getSession());
			fotosHome.persist(foto);
			notfoto.setFotos(foto);
			notfoto.setNoticia(noticia);
			notfotoHome.setSession(getSession());
			notfotoHome.persist(notfoto);
			result = SUCCESS;
		}
	}
	
	

	public SimpleDateFormat getSdt() {
		return sdt;
	}

	public void setSdt(SimpleDateFormat sdt) {
		this.sdt = sdt;
	}

	public Noticia getNoticia() {
		return noticia;
	}

	public void setNoticia(Noticia noticia) {
		this.noticia = noticia;
	}

	public Fotos getFotos() {
		return foto;
	}

	public void setFotos(Fotos foto) {
		this.foto = foto;
	}

	public NoticiaFotos getNotfoto() {
		return notfoto;
	}

	public void setNotfoto(NoticiaFotos notfoto) {
		this.notfoto = notfoto;
	}

	public Fotos getFoto() {
		return foto;
	}

	public void setFoto(Fotos foto) {
		this.foto = foto;
	}

	public File getArquivo() {
		return arquivo;
	}

	public void setArquivo(File arquivo) {
		this.arquivo = arquivo;
	}

	public List<Noticia> getNoticias() {
		return noticias;
	}

	public void setNoticias(List<Noticia> noticias) {
		this.noticias = noticias;
	}

	public String getPublicacao() {
		return publicacao;
	}

	public void setPublicacao(String publicacao) {
		this.publicacao = publicacao;
	}

	public int getCodNoticiaBuscada() {
		return codNoticiaBuscada;
	}

	public void setCodNoticiaBuscada(int codNoticiaBuscada) {
		this.codNoticiaBuscada = codNoticiaBuscada;
	}




}
